iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Vue.js

Vue & GraphQL 探險之旅:30天,從新手村到魔王之巔系列 第 25

[Day25] Vue 中的 GraphQL 變數策略及其缺陷探討

  • 分享至 

  • xImage
  •  

本文將重點探討 GraphQL 變數如何在 Vue 中使用,並了解這些變數策略背後可能存在的缺陷。通過實際的程式碼範例,我們會揭示可能出現的問題點並提供相對應的解決方案。

GraphQL 變數基礎

GraphQL 變數的定義與使用方法
在 Vue 中如何利用變數進行動態查詢

常見的缺陷與問題點

變數更新未觸發重新查詢

在某些情境下,當我們更新一個 GraphQL 查詢的變數時,Apollo Client 可能不會重新執行該查詢。這可能是因為該查詢已被認為是「非活躍的」,或者變數更新被認為不會改變查詢結果。
實際上,這可能會造成數據不一致,導致 UI 顯示的數據與後端實際的數據不符。

變數與 Vue 的響應性間的衝突

Vue 的響應性系統會追蹤依賴,確保當數據變化時,相關的 UI 也會更新。然而,如果我們不正確地處理 GraphQL 變數,可能會打破這種反應性,導致 UI 不會正確更新。
例如,直接修改一個用於 GraphQL 查詢的變數物件可能不會觸發查詢的重新執行,因為 Apollo Client 可能不會「看到」這種變化。

深層嵌套的變數問題

當我們有一個包含多層嵌套的 GraphQL 變數時,更新這種變數的某一部分可能會特別棘手。Vue 3 的 reactive 與 ref 提供了一些工具,但我們仍需要特別小心,以確保不破壞反應性。
一個常見的陷阱是在不使用 Vue 的 set 方法的情況下,直接向一個響應式物件添加新屬性。

實例:程式碼中的缺陷展示

如何解決這些問題

使用 watchEffect 或 watch 監聽 GraphQL 變數的變化
避免在模板中直接操作 GraphQL 變數
更多的解決方案與建議


上一篇
[Day24] 魔法重構:細節至上,使用 Fragments 模組化 GraphQL Document
下一篇
[Day26] Vue 與 GraphQL 複雜查詢的性能優化
系列文
Vue & GraphQL 探險之旅:30天,從新手村到魔王之巔31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言